package leetcode;

/**
 * 描述:
 *
 * @Package: codeDay01
 * @ClassName: LengthOfLongestSubstring
 * @Author: 陈威
 * @CreateTime: 2022/1/19 16:20
 * @Description:
 */

import java.util.HashMap;
import java.util.Map;

/**
 * 描述:无重复字符的最长子串
 * 给定一个字符串 s ，请你找出其中不含有重复字符的 最长子串 的长度。
 *
 * @return:
 * @author: chenwei
 * @date : 2022/1/19 16:21:00
 */
public class LengthOfLongestSubstring {

    public int lengthOfLongestSubstring(String s) {
        int length = s.length();
        int max = 0;

        Map<Character, Integer> map = new HashMap<>();
        for (int start = 0, end = 0; end < length; end++) {
            char element = s.charAt(end);
            //如果包含 则代表目前记录的子串
            if (map.containsKey(element)) {
                start = Math.max(map.get(element) + 1, start); //map.get()的地方进行+1操作
            }
            max = Math.max(max, end - start + 1);
            map.put(element, end);


        }
        return max;
    }

    public static void main(String[] args) {
        LengthOfLongestSubstring lengthOfLongestSubstring = new LengthOfLongestSubstring();
        System.out.println(lengthOfLongestSubstring.lengthOfLongestSubstring("pwwpwkewp"));
    }
}
